package br.com.sigde.dao.comando;

import java.io.InputStream;
import java.util.Iterator;
import java.util.List;

import org.jdom.Document;
import org.jdom.Element;
import org.jdom.input.SAXBuilder;

public class CommandUtil {
	
private static final String PATH= "/br/com/siprot/dao/comando/";
	
	private CommandUtil(){ }
	
	public static String getComandoSQL(String comando,Class dao) {
		CommandUtil xmlUtil = new CommandUtil();
		String nmArquivo = dao.getName().substring(dao.getName().lastIndexOf(".")+1, dao.getName().lastIndexOf("DAO")) +"SQL.xml";
		
		return xmlUtil.getSQL(comando,nmArquivo);
	}
	
	/**
	 * Metodo que busca no XML consultas.xml o comando sql a partir de um
	 * nome de uma consulta fornecido
	 * @param String Nome de uma consulta SQL fornecido .  
	 * @return SQL obtido no xml
	 */
	private String getSQL(String nomeConsulta, String nomeArquivo) {
		 String sqlRetorno = "";
		 try {
			//Aqui voce informa o nome do arquivo XML.  
			InputStream input =  getClass().getResourceAsStream(nomeArquivo);
			// Obtem o documento XML a partir do InputStream informado.
			SAXBuilder builder = new SAXBuilder();
            //Este documento agora possui toda a estrutura do arquivo.  
			Document d = builder.build(input);
			//Recuperamos o elemento root  
			Element mural = d.getRootElement();  
			//Recuperamos os elementos filhos (children)  
			List elements = mural.getChildren();  
			Iterator i = elements.iterator();  
			
			//Iteramos com os elementos filhos, e filhos do dos filhos  
			while (i.hasNext()) {  
				Element element = (Element) i.next();  
			    String nomeSQLVerifica =  element.getChildText("nome-consulta");
			    if(nomeConsulta.equals(nomeSQLVerifica)){
			    	sqlRetorno = element.getChildText("sql");
			    }
		   }  
	   } catch (Exception e) {
		       e.printStackTrace();
	   } 
	
	return sqlRetorno.trim();
  }
}
